Skip to content

Conversation

@KodaiD
Copy link
Contributor

@KodaiD KodaiD commented Oct 31, 2025

Description

This PR adds the Admin implementation for Blob adapter, enabling administrative operations over Azure Blob storage.

Support for S3 and GCS, and Storage operations will be addressed in subsequent PRs.

Related issues and/or PRs

N/A

Changes made

  • Added the DistributedStorageAdmin implementation for Object Storage.
  • Added the ObjectStorageWrapper implementation for Azure Blob storage.
  • Added unit tests.
  • Added integration tests.

Checklist

  • I have commented my code, particularly in hard-to-understand areas.
  • I have updated the documentation to reflect the changes.
  • I have considered whether similar issues could occur in other products, components, or modules if this PR is for bug fixes.
  • Any remaining open issues linked to this PR are documented and up-to-date (Jira, GitHub, etc.).
  • Tests (unit, integration, etc.) have been added for the changes.
  • My changes generate no new warnings.
  • Any dependent changes in other PRs have been merged and published.

Additional notes (optional)

N/A

Release notes

Added support for administrative operations over Azure Blob Storage.

@KodaiD KodaiD self-assigned this Oct 31, 2025
@KodaiD KodaiD added the enhancement New feature or request label Oct 31, 2025
@KodaiD
Copy link
Contributor Author

KodaiD commented Oct 31, 2025

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds administrative operation support for the Azure Blob storage adapter. The changes are extensive, including new admin implementations, configurations, utility classes, and a suite of integration and unit tests.

The overall implementation looks solid and follows existing patterns in the codebase. I've found a few areas for improvement:

  • A potential bug in the test utilities where teardown logic might fail if certain resources don't exist.
  • A violation of the immutability contract in one of the new metadata classes.
  • A minor code style issue with redundant formatting.

Details are in the specific comments. Otherwise, the changes are well-structured and the test coverage is good.

@KodaiD
Copy link
Contributor Author

KodaiD commented Oct 31, 2025

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces support for administrative operations for the Azure Blob storage adapter. The changes are well-structured, with clear separation of concerns between the generic object storage logic and the specific Blob storage implementation. The use of a wrapper interface for the storage client is a good design choice. I've included a couple of comments for potential improvements, one regarding the robustness of a delete operation and another about handling concurrent administrative operations.

@KodaiD
Copy link
Contributor Author

KodaiD commented Oct 31, 2025

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces administrative operation support for the Azure Blob storage adapter. The changes include a new ObjectStorageAdmin implementation that manages table and namespace metadata as objects within the storage. It also adds a generic ObjectStorageWrapper interface to abstract away the specifics of different object storage services, with an initial implementation for Azure Blob. The changes are well-structured and include comprehensive unit and integration tests. I have a couple of suggestions to reduce code duplication in the ObjectStorageAdmin class for better maintainability.

@KodaiD KodaiD marked this pull request as ready for review October 31, 2025 04:53
Copilot AI review requested due to automatic review settings October 31, 2025 04:53
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces Azure Blob Storage support for ScalarDB by implementing a new object storage adapter layer. The implementation provides admin functionality for metadata management without supporting full distributed storage operations.

Key changes:

  • Adds Azure Blob Storage wrapper and configuration classes with comprehensive storage operations
  • Implements ObjectStorageAdmin for managing table and namespace metadata stored in JSON format
  • Adds extensive test coverage including unit tests and integration tests with Azurite emulator

Reviewed Changes

Copilot reviewed 35 out of 36 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
core/build.gradle Adds Azure Blob SDK dependency and new integration test source set
build.gradle Adds Azure Blob Storage version configuration
.github/workflows/ci.yaml Adds CI workflow for Azure Blob integration tests using Azurite emulator
BlobConfig.java Configuration class parsing blob storage connection details and parallel upload settings
BlobWrapper.java Azure Blob Storage implementation with CRUD operations and ETags for versioning
BlobProvider.java Service provider interface implementation for blob storage
ObjectStorageAdmin.java Admin operations managing metadata as JSON objects in blob storage
ObjectStorageUtils.java Utility methods for constructing object keys and configuration
Serializer.java JSON serialization/deserialization using Jackson
ConcatenationVisitor.java Visitor pattern implementation for building concatenated partition keys
Multiple test files Comprehensive unit and integration test coverage
ConsensusCommitSpecificIntegrationTestBase.java Makes several test methods public for better testability
CoreError.java Adds error codes for unsupported object storage operations

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@KodaiD KodaiD requested review from a team, Torch3333, brfrn169, feeblefakie and komamitsu and removed request for a team October 31, 2025 07:14
@KodaiD KodaiD requested a review from feeblefakie November 4, 2025 12:09
Copy link
Contributor

@komamitsu komamitsu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! 👍

@brfrn169 brfrn169 requested a review from josh-wong November 5, 2025 05:42
Copy link
Collaborator

@brfrn169 brfrn169 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left several comments. PTAL!

@KodaiD KodaiD requested a review from brfrn169 November 5, 2025 09:14
Copy link
Member

@josh-wong josh-wong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added some comments and suggestions. PTAL!

@KodaiD KodaiD requested a review from josh-wong November 5, 2025 13:06
Copy link
Contributor

@Torch3333 Torch3333 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thank you!

Copy link
Member

@josh-wong josh-wong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've left some minor suggestions. Other than that, LGTM. Thank you!🙇🏻‍♂️

Copy link
Contributor

@feeblefakie feeblefakie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thank you!

Copy link
Collaborator

@brfrn169 brfrn169 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants